using System;

namespace SBPweb.RIA.Shared.Contracts.Logging
{
	/// <summary>
	/// Class of LogWriteEventArgs
	/// </summary>
    public class LogWriteEventArgs : EventArgs
	{

		#region Private members

		private object obj;
        private string category;
        private SeverityLevel severity;
        private int priority;
        private int eventId;
        private string title;

		#endregion

		#region Constructor logic

		/// <summary>
		/// Constructor of LogWriteEventArgs
		/// </summary>
		/// <param name="severity">severity</param>
		/// <param name="obj">object</param>
		/// <param name="category">category</param>
        public LogWriteEventArgs(SeverityLevel severity, object obj, string category)
            : this(severity, obj, category, 0)
        {
        }

		/// <summary>
		/// Constructor of LogWriteEventArgs
		/// </summary>
		/// <param name="severity">severity</param>
		/// <param name="obj">object</param>
		/// <param name="category">category</param>
		/// <param name="priority">priority</param>
        public LogWriteEventArgs(SeverityLevel severity, object obj, string category, int priority)
        {
            this.severity = severity;
            this.obj = obj;
            this.category = category;
			this.priority = priority;
		}

        /// <summary>
        /// Constructor of LogWriteEventArgs
        /// </summary>
        /// <param name="severity">severity</param>
        /// <param name="obj">object</param>
        /// <param name="category">category</param>
        /// <param name="priority">priority</param>
        /// <param name="title">title</param>
        /// <param name="eventId">EventId</param>
        public LogWriteEventArgs(SeverityLevel severity, object obj, string category, int priority, string title, int eventId)
        {
            this.severity = severity;
            this.obj = obj;
            this.category = category;
            this.priority = priority;
            this.title = title;
            this.eventId = eventId;
        }

		#endregion

		#region Public properties

		/// <summary>
		/// Severity
		/// </summary>
        public SeverityLevel Severity
        {
            get
            {
                return severity;
            }
        }

		/// <summary>
		/// Object
		/// </summary>
        public object Object
        {
            get
            {
                return obj;
            }
        }

		/// <summary>
		/// Category
		/// </summary>
        public string Category
        {
            get
            {
                return category;
            }
        }

		/// <summary>
		/// Priority
		/// </summary>
        public int Priority
        {
            get
            {
                return priority;
            }
		}

        /// <summary>
        /// EventId
        /// </summary>
        public int EventId
        {
            get
            {
                return eventId;
            }
        }

        /// <summary>
        /// Title
        /// </summary>
        public string Title
        {
            get
            {
                return title;
            }
        }

		#endregion

	}
}